Version Control Systems (VCS) provide for the management of changes to documents or any other collection of information. A VCS provides the ability to keep track of changes, revert a document to a previous revision, etc. These features make Version Control Systems (VCS) a suitable solution for persisting artifacts in a development environment.
In particular a centralized VCS provides additional capabilities (such as: centralized access control, one single source of authoritative data, etc.) that makes a centralized VCS advantageous in a development environment.
A disadvantage of centralized VCS becomes apparent in cluster environments used by thousands of client systems. In such large systems failures of hardware components in the cluster are the norm, not the exception. Unfortunately in cluster environments, a centralized VCS does not deal with such failures gracefully and therefore cannot guarantee high availability. Due to the architecture of the centralized VCS, a single repository failure can cause complete denial of service for all users. As a consequence, centralized VCSs are fragile and do not scale very well making them unsuitable as persistent storage of artifacts in a cluster environment.
Accordingly it would be desirable to provide a VCS having the advantages of a centralized VCS while dealing with failures of components in a cluster environment gracefully to guarantee uptime.
It would further be desirable to provide a VCS having the advantages of a centralized VCS without the inherent fragility and which therefore scales well making it suitable for persistent storage in a cluster environment.